package com.campusevaluation.service.impl;

import com.campusevaluation.common.exception.Result;
import com.campusevaluation.common.utils.UserContext;
import com.campusevaluation.dao.repository.QuestionnaireRepository;
import com.campusevaluation.domain.po.Questionnaire;
import com.campusevaluation.service.QuestionnaireService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;

@Service
@RequiredArgsConstructor
public class QuestionnaireServiceImpl implements QuestionnaireService {
    private final QuestionnaireRepository questionnaireRepository;

    /**
     * 创建一个空问卷并将id返回前端
     * @return
     */
    @Override
    public Result<String> createQuestionnaire() {
        Questionnaire questionnaire = new Questionnaire();
        questionnaire.setCreatorId(UserContext.getUserId());
        questionnaireRepository.save(questionnaire);
        return Result.success("问卷创建成功", questionnaire.getId());
    }

    @Override
    public Result<List<Questionnaire>> getQuestionnaireList() {
        List<Questionnaire> questionnaireList = questionnaireRepository.findAll();
        if (questionnaireList.isEmpty()) {
            return Result.error("暂无问卷");
        }
        return Result.success("问卷查询成功", questionnaireList);
    }

    @Transactional
    @Override
    public Result<String> updateQuestionnaire(Questionnaire questionnaire) {
        questionnaireRepository.save(questionnaire);
        return Result.success(null, "问卷更新成功");
    }

    @Transactional
    @Override
    public Result<String> deleteQuestionnaire(String id) {
        Questionnaire questionnaire = questionnaireRepository.findById(id).orElse(null);
        if (questionnaire == null) {
            return Result.error("问卷删除失败");
        }
        questionnaireRepository.deleteById(id);
        return Result.success(null, "删除问卷成功");
    }

    @Override
    public Result<Questionnaire> getQuestionnaire(String id) {
        Questionnaire questionnaire = questionnaireRepository.findById(id).orElse(null);
        return Result.success("查找成功", questionnaire);
    }

    @Transactional
    @Override
    public Result<String> deleteQuestionnaireBatch(List<String> questionnaireIds) {
        for (String questionnaireId : questionnaireIds) {
            Questionnaire questionnaire = questionnaireRepository.findById(questionnaireId).orElse(null);
            if (questionnaire == null) {
                return Result.error("问卷删除失败");
            }
            questionnaireRepository.deleteById(questionnaireId);
        }
        return Result.success(null, "问卷删除成功");
    }

}
